// 第07节:引用类型-数组


// 初识引用类型

// let jspang={
//     name:'技术胖',
//     website:'jspang.com',
//     age:19,
//     saySomeing:function(){
//         console.log('为了做前端')
//     }
// }
// console.log(jspang.name)
// jspang.saySomeing()

// TypeScript中也给我们提供了一些引用类型
/**
 * Array（数组）、String（字符串）、Date（日期对象）、RegExp（正则表达式）等
 * */ 


//  初始化数组的两种方法

// 声明数组的方法
// let arr1:number[] //声明一个数组类型的数组
// let arr2:Array<string> //声明一个字符串类型的数组

// 给数组赋值
    // 字面量赋值法：直接使用“[ ]”对数组进行赋值。
    // 构造函数赋值法：

// 字面量赋值法

// 定义一个空数组，数组容量为0
// let arr1:number[]=[]
// // 定义一个数组，并且直接给数组赋值
// let arr2:number[]=[1,2,3]
// // 定义一个数组，同时给数组赋值
// let arr3:Array<string>=['就好','回教室了']
// let arr4:Array<boolean>=[true,false]
// // 需要注意的是，在TypeScript中指定数据类型的数组只能存储同一类型的数组元素。
// // 报错！必须存储number类型的数据
// let arr5:number[]=[1,2,'dfd']

// let arr1:Array<number>=[12,34,12]
// let arr2:boolean[]=[true,false]
// console.log(arr1)
// console.log(arr2)

// 总结，数组的什么可以用 let arr1:类型[]=[]或者let arr1:Array<类型>=[]这样的形式


// 构造函数赋值法
    // 在 TypeScript 中使用 Array 这个引用类型来表示数组的，那么每一个数组都是 Array 类型的实例。那么，我们在创建数组的时候也可以使用构造函数来进行赋值。
// let arr1:number[]=new Array()
// let arr2:number[]=new Array(1,2,3)
// let arr3:Array<string>=new Array('1','2')
// let arr4:Array<boolean>=new Array(true,false)
// console.log(arr1)
// console.log(arr2)
// console.log(arr3)
// console.log(arr4)

// 这两种方法，都可以给数组进行赋值，在实际开发中使用哪种方法都是可以的。



// 认识元祖，一种特殊的数组
// 元祖是一种特殊的数组，元祖类型允许表示一个已知元素数量和类型的数组，各元素的类型不必相同。比如，你可以定义一对值分别为string和number类型的元祖。元祖在实际开发中使用的非常少，大家了解一下就可以了，不做过多介绍。

// 声明一个元祖
let x:[string,number]
// 正确的初始化
x=['fldsj',12]
// // 错误的初始化
// x=[2,'hfljkds']

// TypeScript中其它的数组知识跟JavaScript中的一样